package scooper.cn.sc_base;

import org.json.JSONObject;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * utils for JSONObject
 * Created by jiangwj on 2014/8/27.
 */
public final class JSONUtils {

    /**
     * 转换日期字符串(yyyy-MM-dd HH:mm:ss)为日期，若字符串为空则输出 null。
     * @param o      JSONObject
     * @param key    key
     * @return 为空输出null，否则输出对应的Date值
     */
    public static Date safeDate(JSONObject o, String key) {
        String s = o.optString(key, null);
        if (StringUtils.isEmpty(s)) return null;
        //
        try {
            final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return sdf.parse(s);
        } catch (Exception ex) {
            return null;
        }
    }

    /**
     * 输出JSON对象中的值为 Integer ，若值为空则输出为 null。
     * @param o      JSONObject
     * @param key    key
     * @return 为空输出null，否则输出对应的Integer值
     */
    public static Integer safeInteger(JSONObject o, String key) {
        Object val = o.opt(key);
        if (val == null) return null;
        if (val instanceof String) {
            try {
                return (int) Double.parseDouble((String) val);
            } catch (Exception ex) {
                // Ignore.
            }
        } else if (val instanceof Number) {
            return ((Number) val).intValue();
        }
        return null;
    }

    /**
     * 输出 JSON 对象中的值为 Boolean ，若值为空则输出为 null。
     * @param o      JSONObject
     * @param key    key
     * @return 为空输出null，否则输出对应的Boolean值
     */
    public static Boolean safeBoolean(JSONObject o, String key) {
        Object val = o.opt(key);
        if (val == null) return null;
        return o.optBoolean(key);
    }

}
